package hot;

import java.util.ArrayList;
import java.util.List;

public class qiliusan {
    public static List<Integer> partitionLabels(String s) {
        List<Integer> list=new ArrayList<>();
        //记录字符串中的每个字符，最后出现的位置，从而达到找每个字符的右边界
        int[] last=new int[26];
        int n=s.length();
        for(int i=0;i<n;i++){
            last[s.charAt(i)-'a']=i;
        }
        //开始比较maxright是否与index相等
        int maxright=0;
        int left=0;
        for(int i=0;i<n;i++){
            maxright=Math.max(maxright,last[s.charAt(i)-'a']);
            if(maxright==i){
                list.add(i-left+1);
                left=i+1;
            }
        }
        return list;

    }

    public static void main(String[] args) {
        String s = "ababcbacadefegdehijhklij";
        List<Integer> list = partitionLabels(s);
        System.out.println(list);


    }

}
